home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1999 / MacHack 1999.toast / The Hacks / AppleImprovementShowcase / HelpMeNot! / blah.cp next >
Encoding:
Text File  |  1999-06-26  |  1.5 KB  |  59 lines  |  [TEXT/CWIE]

  1. #include <A4Stuff.h>
  2. #include <MixedMode.h>
  3. #include <QDOffscreen.h>
  4.  
  5. #define    KeyMapLoMem ((unsigned char *)0x174)
  6. #define    KeyIsDown(key)    (( KeyMapLoMem[ key >> 3 ] >> ( key & 7)) &1)
  7.  
  8. #define    helpKey    0x72
  9.  
  10. enum {
  11.     getNextEventProcInfo = (kPascalStackBased | RESULT_SIZE(sizeof(Boolean)) | 
  12.                     STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short))) |
  13.                     STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(EventRecord *)))
  14.     )
  15. };
  16.  
  17. RoutineDescriptor *gGetNextEventAddr;
  18. pascal Boolean MyGetNextEvent(short eventMask, EventRecord *theEvent);
  19.  
  20. void main(void);
  21. RoutineDescriptor MainRD = BUILD_ROUTINE_DESCRIPTOR(kCStackBased, main);
  22.  
  23. void main(void)
  24. {
  25.     UniversalProcPtr theProcPtr;
  26.     THz theZone;
  27.     
  28.     EnterCodeResource();
  29.     
  30.     
  31.     DetachResource(GetResource('INIT',2));
  32.     
  33.     theZone = GetZone();
  34.     SetZone(SystemZone());
  35.  
  36.  
  37.     gGetNextEventAddr = NGetTrapAddress(_GetNextEvent, ToolTrap);
  38.     theProcPtr = NewRoutineDescriptor( (ProcPtr)MyGetNextEvent,getNextEventProcInfo, GetCurrentArchitecture() );
  39.     NSetTrapAddress(theProcPtr, _GetNextEvent, ToolTrap);
  40.  
  41.  
  42.     SetZone(theZone);
  43.  
  44.     ExitCodeResource();
  45. }
  46.  
  47. pascal Boolean MyGetNextEvent(short eventMask, EventRecord *theEvent) {
  48.  
  49.     Boolean result;
  50.     
  51.     if(KeyIsDown(helpKey)){
  52.         result = CallUniversalProc((UniversalProcPtr)gGetNextEventAddr, getNextEventProcInfo, eventMask, theEvent);
  53.         theEvent->what = 0;
  54.         return false;
  55.     } else {
  56.         result = CallUniversalProc((UniversalProcPtr)gGetNextEventAddr, getNextEventProcInfo, eventMask, theEvent);
  57.         return result;
  58.     }
  59. }